package br.com.fafica.sisape.control;

import java.sql.SQLException;
import java.util.ArrayList;

import br.com.fafica.sisape.dao.DAOClinica;
import br.com.fafica.sisape.dao.DAOExame;
import br.com.fafica.sisape.model.AgendaExame;
import br.com.fafica.sisape.model.Clinica;
import br.com.fafica.sisape.model.Endereco;
import br.com.fafica.sisape.model.Exame;
import br.com.fafica.sisape.repositorioarray.RepositorioAgendaExame;
import br.com.fafica.sisape.repositorioarray.RepositorioClinica;
import br.com.fafica.sisape.repositorioarray.RepositorioExame;

public class ControllerClinica {

	public static String modo = "";
	public static Clinica clinicaLogada;
	
	public void InserirClinica(String nome, String rua, String cidade, String cnpj, String telefone) {
		Endereco end = new Endereco(rua, cidade);
		Clinica clinica = new Clinica(nome, end, cnpj, telefone);

		if (modo.equals("Teste")) {
			RepositorioClinica repoCli = new RepositorioClinica();
			repoCli.createClinica(clinica);
		} else if (modo.equals("MySql")) {
			DAOClinica daoClinica = new DAOClinica();
			try {
				daoClinica.createClinica(clinica);
			} catch (SQLException e) {
				System.out.println();
			}
		}
	}
	
	public ArrayList listarClinicas() {
		ArrayList listaClinicas = new ArrayList<>();

		if (modo.equals("Teste")) {
			RepositorioClinica repoCli = new RepositorioClinica();
			listaClinicas = repoCli.readClinica();
		} else if (modo.equals("MySql")) {
			DAOClinica daoClinica = new DAOClinica();
			try {
				listaClinicas = daoClinica.readClinica();
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
		}
		return listaClinicas;
	}
	

	public void InserirExames(String dataExame, Integer codClinica, String tipoExame,
			String resultado, Integer codPaciente) {
		Exame exame = new Exame(dataExame, codClinica, tipoExame, resultado);

		if (modo.equals("Teste")) {
			RepositorioExame repoEx = new RepositorioExame();
			repoEx.createExame(exame, codPaciente);
		} else if (modo.equals("MySql")) {
			DAOExame daoExame = new DAOExame();
			try {
				Integer cod = codPaciente;
				daoExame.createExame(exame, cod, clinicaLogada.getCod());
			} catch (SQLException e) {
				System.out.println();
			}
		}
	}

	public ArrayList listarExames(Integer codPaciente) {
		ArrayList listaExames = new ArrayList<>();

		if (modo.equals("Teste")) {
			RepositorioExame repoEx = new RepositorioExame();
			listaExames = repoEx.readExame(codPaciente);
		} else if (modo.equals("MySql")) {
			DAOExame daoExame = new DAOExame();
			try {
				listaExames = daoExame.readExame(codPaciente);
			} catch (SQLException e) {
				System.out.println(e.getMessage());
			}
		}
		return listaExames;
	}

	public void editarExames(Integer cod, String dataExame, Integer clinica,
			String tipoExame, String resultado, Integer codPaciente)
			throws SQLException {
		Exame e = new Exame();
		e.setCod(cod);
		e.setCodUsuario(codPaciente);
		e.setDataExame(dataExame);
		e.setCodClinica(clinica);
		e.setTipoExame(tipoExame);
		e.setResultado(resultado);

		if (modo.equals("Teste")) {
			RepositorioExame repoEx = new RepositorioExame();
			repoEx.updateExame(e);
		} else if (modo.equals("MySql")) {
			DAOExame daoExame = new DAOExame();
			daoExame.updateExame(e);
		}
	}

	public void deletarExames(Integer cod, String dataExame, Integer clinica,
			String tipoExame, String resultado) throws SQLException {
		Exame e = new Exame();
		e.setCod(cod);
		e.setDataExame(dataExame);
		e.setCodClinica(clinica);
		e.setTipoExame(tipoExame);
		e.setResultado(resultado);

		if (modo.equals("Teste")) {
			RepositorioExame repoEx = new RepositorioExame();
			repoEx.deleteExame(e);
		} else if (modo.equals("MySql")) {
			DAOExame daoExame = new DAOExame();
			daoExame.deleteExame(e);
		}
	}

	// Agenda Exames

	public void inserirAgendaExame(String data, String hora, String nome,
			String clinica) {

		AgendaExame agendaExame = new AgendaExame(data, hora, nome, clinica);
		RepositorioAgendaExame repoAgendaEx = new RepositorioAgendaExame();
		repoAgendaEx.createAgendaExame(agendaExame);

	}

	public ArrayList listarAgendaExame() {
		ArrayList lista = new ArrayList<>();
		RepositorioAgendaExame repo = new RepositorioAgendaExame();
		lista = repo.readAgendaExame();
		return lista;

	}

	public void editarAgendaExame(AgendaExame agendaExame) {
		RepositorioAgendaExame repo = new RepositorioAgendaExame();
		repo.updateAgendaExame(agendaExame);
	}

	public void deletarAgenaExame(AgendaExame agendaExame) {
		RepositorioAgendaExame repo = new RepositorioAgendaExame();
		repo.deleteAgendaExame(agendaExame);
	}
}
